package com.cls.system.service;

import com.cls.system.entity.SysFile;

import com.cls.common.entity.QueryRequest;
import com.github.pagehelper.PageInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.csource.common.MyException;
import org.springframework.lang.Nullable;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
import java.util.List;

/**
 * 系统附件 Service接口
 *
 * @author wmm
 * @date 2020-12-02 09:33:06
 */
public interface ISysFileService extends IService<SysFile> {


    /**
     * 更新状态
     *  fileId oldFileId都可以为null,但是不能都为null
     * @param fileId    当前上传的fileId，可以为null 如果为null则表示删除掉了此文件但是没有上传
     * @param oldFileId 替换之前的fileId，可以为null
     */
    void updateIsFinish(@Nullable Long fileId, @Nullable Long oldFileId);


    /**
     * 上传文件
     *
     * @param file
     * @return
     * @throws IOException
     */
    SysFile uploadFile(MultipartFile file) throws IOException, MyException;

    SysFile uploadFile(MultipartFile file, String name) throws IOException, MyException;

    /**
     * 文件下载
     * @param fileId
     * @param response
     */
    void download(Long fileId, HttpServletResponse response) throws IOException, MyException;

    /**
     * 查询创建时间小于前天的时间且未完成的数据
     * @return
     */
    List<SysFile> findNoFinishFile(Date date);


}
